#include <iostream>
using namespace std;

inline void put(int&l, int i, int v)// v: 0/1
{
	if(v) l|=(1<<i);
	else l&=~(1<<i);
}
inline int test(int l, int i)
{
	return l&(1<<i) ? 1 : 0;
}
inline bool issub(int sub, int s){return s==((s-sub)|sub);}
inline int remain(int sub, int s){return sub^s;}

int main()
{
	// binary output
	for(int i=0;i<0xF;i++)
	{
		for(int j=3;j>=0;j--)
			cout<<test(i, j);
		cout<<endl;
	}

	int l=4;
	put(l, 0, 1); // l==5
	put(l, 0, 0); // l==4

	bool b1=issub(3, 4);
	bool b2=issub(2,6);
	int i1=remain(2,6);
}